Computerized Travel Itinerary Recommendation Tool and Method

ABSTRACT

A computerized travel itinerary recommendation tool includes an itinerary set selector, a user preference modeler, and a recommendation engine. The itinerary set selector obtains one or more trip conditions from a user and causes the display of a first set of two or more selected travel itineraries conforming to the trip conditions. The itinerary set selector further prompts the user to select a subset of the first set of displayed travel itineraries. The user preference modeler adjusts a user preference model based at least in part on the user&#39;s selection. The recommendation engine applies the user preference model to a set of travel products conforming to the trip criteria. and causes the display of a recommended travel itinerary. The recommended travel itinerary is a travel product from the set of travel products that most closely matches the user preferences based on the user preference model.

RELATED APPLICATIONS

This application claims the benefit of Provisional Application Ser. No. 62/621,986, filed on Jan. 25, 2018 and entitled “DUELLING OFFERS,” Provisional Application Ser. No. 62/649,903, filed on Mar. 29, 2018 and entitled “DUELLING OFFERS,” and Provisional Application Ser. No. 62/621,998, filed on Jan. 25, 2018 and entitled “TRIP CONTEXT,” the contents of which are incorporated by reference herein in their entirety.

TECHNICAL FIELD

Certain embodiments of the present disclosure relate, in general, to computerized shopping and booking travel products and, more particularly, a computerized travel itinerary recommendation tool.

BACKGROUND

Travel service providers, such as airlines, hoteliers, and travel agents, create and make available for purchase different travel products. For example, an airline may offer flights between cities on certain days at different times and create travel products associated with those flights. In this example, the travel products may include airline tickets for a flight from DFW to O'Hare for different seats on the plane having different options, e.g., levels of service, baggage options, cancellation/transferability conditions, etc. Similarly, hotels may create different travel products based on the different rooms and services available at their hotels. With the increased pressure to differentiate and more specifically target consumers, travel service providers are continually creating different types of travel products and variations of existing travel products by providing more consumer options and customization. As a result, a traveler attempting to book a trip may have an inordinate amount of travel products to choose from. Existing filtering techniques for narrowing down available flights or hotels based on explicit travel criteria, e.g., limiting to a specific airline or seat class, are insufficient to provide a manageable set of options from which to choose. As additional options and travel product dimensions are introduced, existing filtering techniques will become even more inept at providing the traveler with options that coincide with the traveler's desired travel plans.

SUMMARY

According to an embodiment, a computerized travel booking system includes one or more travel products servers, and a travel itinerary recommendation tool. The one or more travel products servers store one or more travel products available for booking through the travel booking system. The travel itinerary recommendation tool includes an itinerary set selector, a user preference modeler, and a recommendation engine. The itinerary set selector obtains one or more trip conditions from the user via a client device and causes the display on the client device a first set of two or more selected travel itineraries conforming to the trip conditions. The two or more selected travel itineraries are selected from a plurality of travel products obtained from the one or more travel products servers. The itinerary set selector further prompts the user to select a subset of the first set of displayed travel itineraries. The user preference modeler adjusts a user preference model based at least in part on the user's selection of the subset of the first set of displayed travel itineraries. The recommendation engine applies the user preference model to a set of travel products conforming to the trip criteria and causes the display of a recommended travel itinerary on the client device. The recommended travel itinerary is a travel product from the set of travel products that most closely matches the user preferences based on the user preference model.

According to another embodiment, a computerized method includes obtaining one or more trip conditions from a user. The method further includes causing the display of a first set of two or more selected travel itineraries conforming to the trip conditions. The method further includes prompting the user to select a subset of the first set of displayed travel itineraries. The method further includes adjusting a user preference model based at least in part on the user's selection of the subset of the first set of displayed travel itineraries. The method further includes applying the user preference model to a set of travel products conforming to the trip criteria. The method further includes causing the display of a recommended travel itinerary. The recommended travel itinerary is a travel product from the set of travel products that most closely matches the user preferences based on the user preference model. The steps of the computerized method are carried out using one or more computers

According to yet another embodiment, a computerized travel itinerary recommendation tool includes an itinerary set selector, a user preference modeler, and a recommendation engine. The itinerary set selector obtains one or more trip conditions from a user and causes the display of a first set of two or more selected travel itineraries conforming to the trip conditions. The itinerary set selector further prompts the user to select a subset of the first set of displayed travel itineraries. The user preference modeler adjusts a user preference model based at least in part on the user's selection of the subset of the first set of displayed travel itineraries. The recommendation engine applies the user preference model to a set of travel products conforming to the trip criteria and causes the display of a recommended travel itinerary. The recommended travel itinerary is a travel product from the set of travel products that most closely matches the user preferences based on the user preference model.

Certain embodiments disclosed herein may provide one or more technical advantages over existing techniques in providing travel options to a traveler. As an example, certain embodiments use the user's selections of itineraries of displayed sets of available travel itineraries to build a user preference model that may more narrowly recommend travel itineraries to the traveler. The sets of available travel itineraries may be chosen to test the preference of the traveler over different dimensions, such as price, comfort, and connections, and the selections of which may be used to adjust weights along those dimensions. As another example, certain embodiments apply a built user preference model to the available travel products to select one or more best recommendations for the traveler. Some embodiments apply the user preference model by comparing the available travel products to the user preference model to select one or more closest fits to recommend. As a result, recommendations may be provided to a traveler that are narrowly tailored to the traveler's preferences. Certain embodiments may have none, some, or all of the above-recited advantages. Other advantages may be readily apparent to one having skill in the art in light of the present disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

For a more complete understanding of the disclosed embodiments and their features and advantages, reference is now made to the following description, taking in conjunction with the accompanying drawings, in which:

FIGS. 1A and 1B illustrates an example travel booking system, in accordance with certain embodiments;

FIG. 2 illustrates an example recommendation tool, in accordance with certain embodiments;

FIG. 3 illustrates a flowchart diagram of an example method for recommending a travel itinerary to a traveler, in accordance with certain embodiments; and

FIGS. 4-8 illustrate a visual representation of an example progression of building a user preference profile using pairs of itineraries and recommending a travel itinerary.

DETAILED DESCRIPTION

As discussed above, existing filtering techniques are inadequate to deal with the ever-increasing number and variety of travel products shopped for by travelers. In particular, filtering still requires the traveler to sift through the remaining options to determine which is the best itinerary. This may prove a daunting task if hundreds or more options still remain. In some instances, the traveler may begin over filtering in an effort to reduce the number of options. This may result in, however, the removal of itineraries that the traveler may prefer. Similarly, the traveler may attempt to add and remove filters to generate different lists of travel itineraries. But, this results in the traveler having to compare and crosscheck options across multiple lists, some of which may not be available at all times, e.g., if the traveler uses the same browsing tab for the different filtering choices. Accordingly, what is desired is a computerized travel booking system and method that can recommend one or more preferred itineraries considering the traveler's preferences across various dimensions in a wholistic manner. Described herein are various embodiments of systems, methods and apparatuses that may address one or more of the problems described herein in recommending travel itineraries to travelers.

As detailed herein, FIGS. 1A and 1B show an example travel booking system for booking or reserving travel products. FIG. 2 shows an implementation of a recommendation tool used to recommend a travel itinerary to a traveler. FIG. 3 illustrates an example method for recommending a travel itinerary to a traveler. Additionally, FIGS. 4-8 show a particular example of a progression of building a user preference profile and recommending a travel itinerary based on a traveler's selection between pairs of itineraries. Although certain embodiments may be described in reference to particular illustrated examples, the disclosure herein is not limited to the particular illustrated embodiments and/or configurations and includes any and all variants of the illustrated embodiments and any and all systems, methods, or apparatuses consistent with the teachings of this disclosure, as understood by a person having ordinary skill in the art.

FIG. 1A illustrates an example travel booking system 100, in accordance with certain embodiments. Travel booking system 100 uses user selections 102 from competing or “dueling” offers 101 to build a user preference model 103. For example, a pair (or any number) of itineraries (e.g., including a flight, hotel, and/or car rental) that are available for the user's trip may be selected to present to the user as dueling offers 101. The itineraries selected may differ based on different criteria. For example, dueling offers 101 may have different prices, a different number of connections, a different class type, different amenity options and/or inclusions, a room type, a car type, etc. The user may select the most preferable subset of the itineraries presented. The user selections 102 may be incorporated into a user preference model 103. Based on user preference model 103, a recommended itinerary 104 may be determined, which represents the itinerary that most closely aligns with the user's preferences based at least in part on user selections 102.

This process may result in dynamically-generated, trip-specific preferences being used to determine recommended itinerary 104. For example, travel booking system 100 may initiate the process by offering dueling offers 101 when the user first searches for travel products for his trip. User selections 102 may, as a result, be specific to the particular trip that user is planning. This may differ from general preferences seen over many trips. While travel booking system 100 may use general preferences of the user (e.g., in selecting the first set of dueling offers 101), those general preferences may differ from the preferences reflected in user selections 102 and incorporated in user preference model 103. For example, the user may generally prefer the lowest cost flights, regardless of airline or other amenities, but the user's circumstances may differ for this particular trip (e.g., the user may have recently suffered a back injury and user selections 102 reflect a higher preference for more expensive, but more comfortable flights or if user is planning a last-minute trip for business, he may be less sensitive to prices and more particular about travel times and connections). This approach may be especially useful in providing recommendations for travelers that book a diversity of trips, which may result in an unspecific preference profile that is less useful to provide recommendations for current trip. Accordingly, various embodiments of systems and methods disclosed herein utilize dynamic and trip-specific user context information to provide accurate recommendations for travel products.

The process of selecting dueling offers 101, obtaining user selections 102, and building user preference model 103 may be iterative, in certain embodiments. For example, for each user selection 102, user preference model 103 may be updated and a new dueling offer 101 may be provided to the user for another selection. User preference model 103 may also influence which itineraries to include in subsequent dueling offers 101. User preference model 103 may be iterated a predetermined number of times, until a user stops the iteration process, or until a certain confidence value is reached for user preference model 103. Once the modeling cycle is complete or otherwise stopped, user preference model 103 may provide recommended itinerary 104, which may include one or more recommended itineraries from which the user may select to book his trip. Accordingly, an enhanced recommendation system and method is provided.

FIG. 1B illustrates an implementation of travel booking system 100, in accordance with certain embodiments. Travel booking system 100 may include a recommendation tool 110, a user profile server 130, a travel products server 135 and a client device 140. Travel booking system 100 may provide travel booking services to a traveler 150 through his client device 140. For example, traveler 150 may access travel booking system 100 through client device 140 to search for, review, and select one or more travel products to book. Travel booking system 100 may address one or more of the described problems by providing a recommended itinerary to traveler 150.

Travel booking system 100 may use recommendation tool 110 to provide one or more recommended itineraries to display to traveler 150 using client device 140, in certain embodiments For example, recommendation tool 110 may first obtain information about traveler 150 from user profile server 130 and available travel products from travel products server 135 relevant to traveler 150's trip (e.g., based on the identity of traveler 150 and/or origin, destination, and dates of the trip). Recommendation tool 110 may then provide one or more sets of relevant itineraries to client device 140 and request that traveler 150 choose one or more preferred itineraries from each provided set. For example, traveler 150 may select only one preferred itinerary or may select a subset of the itineraries in the provided set. Based on the selections, recommendation tool may model traveler 150's preferences. Using this model, recommendation tool 110 may recommend one or more itineraries that best fit with traveler 150's preferences. The recommended itineraries may be displayed on client device 140 such that traveler 150 may view the details of the itineraries and select one of the itineraries to book. If traveler 150 selects an itinerary to book, travel booking system 100 may be further configured to book the itinerary using existing techniques. As a result, travel booking system 100 may provide a recommended itinerary that reflects the preferences of traveler 150. As further detailed below, travel booking system 100 may include various embodiments and features that may enhance the recommendation of travel products to traveler 150.

For example, recommendation tool 110 may include one or more subcomponents that may carry out one or more functions or intermediary steps in providing recommended itinerary 104 to traveler 150. In certain embodiments, recommendation tool 110 includes an itinerary set selector 115, a user preference modeler 120, and a recommendation engine 125. Together, these components of recommendation tool 110 may generate a preference model 103 for traveler 150 and determine a recommended itinerary 104 to display to traveler 150. In particular, in certain embodiments, itinerary set selector 115 may obtain one or more trip conditions from a user, such as traveler 150. For example, recommendation tool 110 may receive data from client device 140 indicating parameters for a trip, such as the origin city/location, a destination city/location, and/or dates of the trip. These conditions may be used to determine which travel products are available for booking for traveler 150's trip. In one example, the conditions obtained may be used by recommendation tool 110 to query travel products servers 135 to obtain a set of available travel products.

Using a list or set of available travel products, itinerary set selector 115 may select a set of two or more itineraries from which traveler 150 may choose. In certain embodiments, itinerary set selector 115 may cause client device 140 to display a first set of two or more selected travel itineraries conforming to the trip conditions. For example, itinerary set selector 115 may send information to client device 140 such that graphical user interface (GUI) 145 a of client device 140 displays each of the itineraries of the set for traveler 150. This may include transferring data over a network 105, e.g., through the internet or other communications apparatus, which is interpreted and displayed on client device 140, e.g., by displaying images and/or text through a web browser or application. The display of each itinerary may include relevant information regarding each itinerary, e.g., price, amenities, number of connections, travel time, airline, check-in and check-out times, etc. Accordingly, traveler 150 may make an informed determination as to which itinerary or itineraries are most preferable of the presented set of itineraries.

Itinerary set selector 115 may determine which itineraries to select to have displayed to traveler 150. For example, recommendation tool 110 and/or itinerary set selector 115 may be configured based on a goal of choosing a set of itineraries that provides feedback from which traveler 150's preferences may be rapidly learned. In certain embodiments, the initial set of itineraries can be selected randomly. For example, if recommendation tool 110 is unable to obtain any prior information indicating the preferences of traveler 150, itinerary set selector 115 may select two random available itineraries conforming to the trip conditions and present those to traveler 150. In some embodiments, the initial set of itineraries selected by itinerary set selector 115 is based on information associated with traveler 150. For example, recommendation tool 110 may obtain preferences of traveler 150 using an explicit feedback method or implicit feedback methods. In particular, recommendation tool 110 may receive information related to traveler 150's prior travel bookings and/or additional trip condition information that indicates one or more preferences.

Each itinerary may be associated with a preference in one or more preference dimensions, in certain embodiments. For example, each itinerary may be associated with parameters that are relatively high or low compared to the same parameters of other itineraries. As a specific example, each itinerary may have an associated price parameter (e.g., the price of a flight), connection parameter (e.g., the number of connections or indication that it is a direct flight), and one or more amenity parameters (e.g., inflight meals, WIFI, free checked baggage, etc.). Each of these parameters may correspond to a different preference dimension that may be modeled.

Recommendation tool 110 may adjust a user preference model that includes one or more preference dimensions including a price sensitivity dimension, a connection sensitivity, and a comfort sensitivity. Itinerary set selector 115 may select two or more travel itineraries that differ across at least one or more of the preference dimensions of the user model. Because there is a difference across at least one of the modeled dimensions, traveler 150's selection of one of the itineraries indicates a preference at a location in the preference space where the selected itinerary is located as opposed to the locations of the unselected itineraries. This preference may be encoded in user preference model 103 by adjusting user preference model 103 based on the differences between the selected itinerary and the unselected itineraries. Accordingly, itinerary set selector 115 may be configured to emphasize differences across each modeled preference dimension in the itineraries selected to include in the set presented to traveler 150.

Itinerary set selector 115 may further prompt traveler 150 to select a subset of the set of displayed travel itineraries. For example, itinerary set selector 115 may display or cause the display of a selection button or check box proximate each itinerary. Traveler 150 may be further prompted to select one or more of the displayed itineraries by text, audio, and/or video instructions via client device 140.

It may be difficult to garner information across all of the relevant preference dimensions using only a single set of itineraries. Multiple sets of itineraries may be presented to traveler 150 to better model traveler 150's preferences, in certain embodiments. The previous selection(s) may influence itinerary set selector 115's selection of the next set of two or more itineraries, in some embodiments. For example, itinerary set selector 115 may utilize a sequential Bayesian experimental design for choosing sets of itineraries to display. As another example, an information gain-based criterion may be used to select subsequent sets of itineraries. The criterion may approximate the expected change in information gain between the traveler's preferences distribution before and after response to any set of itineraries. This may reduce the options for selecting the next set of itineraries, thereby increasing the probability of selecting a set that maximizes the information traveler 150's preferences. Alternatively, in some embodiments, the next set of itineraries may be chosen at random.

The selection of subsequent sets of itineraries may be optimized in different ways by itinerary set selector 115. For example, in certain embodiments, the next set of itineraries are chosen to display to traveler 150 based on a similarity or contrast with the current iteration of user preference model 103. For example, if the current user preference model 103 includes a current traveler price preference (Tpr), a current traveler connection preference (Tcn), and a current traveler comfort preference (Tcf), itinerary set selector 115 may select the next set of itineraries based on preferences Tpr, Tcn, Tcf, or some combination thereof. In some embodiments, a first itinerary to include in the next set of itineraries can be chosen due to its similarity with Tpr and Tcf and its contrast with Tcn, while a second itinerary to include in the next set can be chosen due to its contrast with Tpr, Tcn, and Tcf. This may be done to gain greater certainty of traveler 150's preference in a particular dimension, e.g., because of contradictory prior selections or lack of differences in that dimension in previous sets of itineraries.

Recommendation tool 110 and itinerary set selector 115 may determine similarity and contrast in the modeled preference dimensions using any given technique. The similarity of two preference features may be determined by numerical distance between numerical representations of the given preference features, in certain embodiments. For example, if there is a preference threshold of Td, preference features of itineraries with a distance less than Td may be called similar and preference features with distance greater than Td may be called contrasting or dissimilar. In this manner, the selection of one itinerary over another may only impact a particular preference dimension if the difference along that dimension between the itineraries in the set is large, e.g., larger than the threshold. Conversely, itinerary set selector 115 may use these criteria to determine which itineraries to include in the set, e.g., to select itineraries that have differences that exceed the threshold so that the selection by traveler 150's is a strong indicator of his preference in that dimension.

Certain embodiments may employ more complex calculations to represent the similarity and contrast between different itineraries. For example, recommendation tool 110 and itinerary set selector may use Cartesian coordinates on multi-dimensional planes, multivariate matrix arithmetic, or machine learned algorithms in selecting itineraries. In some embodiments, non-mathematical methods may, additionally or alternatively, be used, such as human expert selection curation. In some embodiments, a decision tree is employed to organize the sets of itineraries selected and used by itinerary set selector 115. The selections from sets of itineraries may be represent at decision nodes of the decision tree, and each node is associated with branches to other nodes from the selected itinerary. In certain embodiments, Information regarding selections along the decision tree from other pervious users. For example, each node of the decision tree may encode the weighted average of user preference model 103 created for each user that travelled that node during the selection process. Accordingly, even if traveler 150 quits selecting itineraries from subsequent sets, a preference model may be generated for traveler 150. As a specific example, if traveler 150 ends on node 1, recommendation tool 110 may use the lists of users associated with node 1 and aggregate user preference model 103 for traveler 150 based on the preferences of the listed users. Accordingly, the preferences of other users may be used to supplement the information used by recommendation tool 110 to determine recommended itinerary 104 for traveler 150.

Based on the iterative nature of the user preference modeling, the more selections made by traveler 150, the more accurate the model may become. For example, each successive selection may be incorporated into user preference model 103 to recursively refine an estimate of traveler 150's preferences. But as shown above, using certain optimizing techniques may result in a good estimation of traveler 150's preferences, even with only a few selections from displayed sets of itineraries. In certain embodiments, the number of sets of itineraries provided to traveler 150 by itinerary set selector 115 is a predetermined value, such as a natural number n=1, 2, 3, . . . . In a particular embodiment, the itinerary set selector 115 presents three sets of itineraries to traveler 150 before ending the user preference modeling generation. In certain embodiments, itinerary set selector 115 continues to select and display sets of itineraries to traveler 150 until a predetermined or adjustable certainty level is exceeded or met by the current iteration of user preference model 103. In this manner, recommendation tool 110 may obtain sufficient information to provide an accurate recommendation based on user preference model 103.

As described above, the selections by traveler 150 by client device 140 may be used by recommendation tool 110 to model the preferences of traveler 150. User preference modeler 120 adjusts a user preference model based at least in part on the selection of an itinerary from the set of displayed travel itineraries, in certain embodiments. Preference modeler 120 may adjust user preference model 103 in a variety of ways based on the selected itinerary. As described earlier, each itinerary may have parameters representing different features, such as price, connections, amenities, etc. Each itinerary may be represented as a vector (or other suitable array or other data structure) with entries of the vector representing “scores” of each feature, in some embodiments. The “scores” may be determined relative to other itineraries, e.g., by normalizing over the range of that feature, e.g. the deviation of the price of the itinerary from a fixed value divided by the difference of the highest and lowest priced related itineraries or by including a binary entry for discrete itinerary options, such as WIFI or extra legroom. In this manner, the itineraries may be more easily manipulated by recommendation tool 110.

User preference model 103 is similarly defined in a data structure, such as an array. The array may encode the preferences indicated by the different selections of itineraries, in certain embodiments. Each selection of an itinerary may correspond to user preference modeler 120 applying a transformation function to the current iteration of user preference model 103 data structure. In some embodiments, the user preference modeler 120 may apply a function or matrix multiplication to user preference model 103 array, wherein the function or matrix multiplication is based on the vector of the selected itinerary and/or the vector(s) of the unselected itineraries. Accordingly, user preference modeler 120 may iteratively adjust user preference model 103 in a systematic manner.

User preference modeler 120 is configured to determine a certainty value of the current user preference model, in certain embodiments. For example, user preference modeler 120 may associate a certainty value for each measured dimension based on the selections by traveler 150. The certainty values may be based on the number of selections completed, the relative differences between the itineraries on which the selections were made, the relative importance of the preference dimension, etc. User preference modeler 120 may make a confidence or certainty determination after each selection by traveler 150. User preference modeler 120 may provide feedback to other components of recommendation tool 110, such as itinerary set selector 115, to indicate the current certainty value of user preference model 103. Itinerary set selector 115 may use that certainty value to determine when to stop selecting sets of itineraries to present to traveler 150. Additionally, the certainty value for a particular preference dimension may be used by itinerary set selector 115 to determine which itineraries to include in the next set. Accordingly, confidence information may inform the user preference modeling process to generate a more accurate model and ensure better recommendations for traveler 150.

User preference model 103 may be applied to determine recommended itinerary 104. In certain embodiments, recommendation engine 125 may apply user preference model 103 to a set of travel products conforming to the trip criteria. For example, recommendation engine 125 may compare user preference model 103 to the set of travel products that are available for traveler 150's trip based on those initial constraints. Based on the comparison, recommendation engine 125 may cause the display of a recommended travel itinerary. The recommended travel itinerary may be the travel product that most closely matches the user preferences based on user preference model 103.

Recommendation engine 125 determines the recommended travel itinerary by applying a function based on user preference model 103 to the set of available travel products, in certain embodiments. For example, recommendation engine 125 may compare user preference model 103 as an array to the arrays representing the itineraries/travel products using a mathematical calculation. Recommendation engine 125 may select a respective travel product that represents a local extreme of a mathematical function or operator as the recommended travel itinerary. In some embodiments, recommendation engine 125 uses the Pearson Correlation Coefficient (r) to determine recommended itinerary 104. For example, recommendation engine 125 may calculate r for each available itinerary/travel product and choose the itinerary/travel product with the greatest value of r as recommended itinerary 104. In some embodiments, recommendation engine 125 uses the measure of Cosine similarity to determine which of the available itineraries to select as recommended itinerary 104 to present to traveler 150. Any other suitable measure or preference ranking may be used by recommendation engine 125 to select recommended itinerary 104 using user preference model 103.

The use of a user preference model may provide certain advantages over conventional filtering techniques. For example, user preference model 103 may represent the preferences of traveler 150 without requiring traveler 150 to explicitly select a preference along that preference dimension. Further, it allows for seemingly contradictory input to be incorporated. For example, an earlier selection may indicate a high sensitivity to price, but a later selection may indicate the opposite. This may be reconciled using user preference model 103 by measuring the preference along a different dimension, e.g., traveler 150 strongly dislikes flying on airline #1 such that price difference does not matter, or it is more important to traveler 150 that baggage and priority access be included. Such preferences may be difficult or impossible to adequately address using mere adjustable filters. Accordingly, recommendation tool 110 and travel booking system 100 may provide an improved itinerary recommendation based on traveler 150's preferences. In certain embodiments recommendation engine 125 may cause the display of multiple recommended itineraries. For example, recommendation engine 125 may determine rankings of the itineraries using user preference model 103 and display a top number of itineraries to traveler 150 via client device 140. In this manner, recommendation tool 110 may present the best options to traveler 150 without overwhelming traveler 150 with a lengthy list of only semi-relevant itineraries.

As mentioned above, traveler 150 may use client device 140 to interface with travel booking system 100, including recommendation tool 110. For example, client device 140 may be communicatively coupled to recommendation tool 110 (and any other component of travel booking system 100) over a network 105. Network 105 may be any suitable communication network or combination of communication networks such as to enable the transfer of information over suitable media between client device 140 and recommendation tool 110. In certain embodiments, client device 140 is any computing device including a graphical user interface (GUI) 145 a and an input/output (I/O) interface 145 b. Client device 140 may use GUI 145 a to display or have displayed the sets of itineraries selected by itinerary set selector 115 of recommendation tool 110. GUI 145 a may be configured to receive input from traveler 150, such as by a touch screen of GUI 145 a or through a keyboard/mouse interaction. In this manner, traveler 150 may receive the sets of itineraries and make selections from the sets. I/O interface 145 b may enable the sets of itineraries and selections to be communicated to and from client device 140 with recommendation tool 110. Further, I/O interface 145 b may enable the communication of the decision to book a recommended itinerary by traveler 150. Client device 140 may be any suitable computing device comprising a combination of hardware and software, including a memory, one or more processors or processing circuitry, and interfaces (including GUI 145 a and I/O interface 145 b). For example, client device 140 may be a desktop computer, a laptop, a mobile phone, a tablet device, etc. In this manner, traveler 150 may interface with travel booking system 100 and receive a tailored recommended itinerary for traveler 150's trip.

As described above, recommendation tool 110 may use information obtained from sources other than traveler 150 and client device 140. For example, recommendation tool 110 may obtain information from user profile server 130 and travel products server 135. Each of these components may be communicatively coupled to recommendation tool over network 105. Network 105 may include any suitable connection or transmission media in which to provide communications between components of travel booking system 100. For example, network 105 may provide wired and/or wireless connection between various components.

User profile server 130 stores information related to traveler 150, in certain embodiments. For example, user profile server 130 may store information regarding traveler 150's viewing history, ticketing history, browsing history, search patterns, mouse movement, keyboard usage of a traveler, etc. In some embodiments, user profile server 130 further stores information provided by traveler 150, such as information provided in setting up a profile. This information may be associated with traveler 150's general profile including gender, age, geographical location (e.g., zip code, city, state, country, etc.). In some embodiments, user profile server 130 stores other previously indicated preferences by traveler 150, such as price sensitivity, availability index, timing index, non-stop service index, or equipment type index. Such preferences may be indicated by traveler explicitly or implicitly. For example, traveler 150 may fill out a form indicating certain preferences or rate criteria when setting up their user profile. On the other hand, traveler 150 may indicate such preferences implicitly based on their past travel history or reviews of past travels. In certain embodiments, recommendation tool 110 may use the information stored in user profile server 130 to initialize or adjust user preference model 103 used to provide a recommendation. For example, the profile information may be used to generate a first iteration of user preference model 103 that is further adjusted by recommendation tool 110 using the selections from the sets of itineraries. Accordingly, recommendation tool 110 may use information accessed from user profile server 130 to enhance the recommendations provided and reducing the amount of processing required to generate a confident user preference model.

Travel products server 135 may include one or more servers hosting travel product information. In certain embodiments, travel products server 135 may include one or more databases storing type of data and/or information related to travel products that are searchable by the recommendation tool 110. For example, travel products server 135 may include one or more airline reservation databases, hotel reservation databases and car rental reservation databases. The airline reservation databases may store information about flight travel products, including flight number, origin, destination, schedule, price, amenities, etc. Similarly, the hotel reservation databases may store information regarding available hotel bookings, including location, price, room-type, amenities, etc. Likewise, the car rental reservation databases may store information regarding car rental travel products, including information regarding the price, pick-up/drop-off options, car types, etc. In this manner, travel products server 135 may make available all relevant travel products to traveler 150's trip for analysis by recommendation tool 110. In some embodiments, some or all of the databases are managed by a global distribution system (GDS). Although the travel products server 135 and user profile server 130 are both illustrated external to recommendation tool 110, those of ordinary skill in the art will understand that each of the servers or parts or components thereof may also be integrated with portions of recommendation tool 110 or other components of travel booking system 100 or integrated together.

The term “server” and/or “servers” or any other reference to a “server” may refer to any suitable combination of hardware and/or software, such as memory and control logic, for storing, accessing, retrieving, and communicating various types of information, for example, user profile and travel product information. Although the disclosure herein refers to user profile sever 130 and travel products severs 135, travel booking system 100 may utilize any suitable server or database implemented thereon that may store information used in providing a recommended itinerary to traveler 150, as described above. One or more of user profile sever 130 and travel products severs 135 may include any suitable combination of volatile or non-volatile, local or remote devices suitable for storing and maintaining information. For example, the one or more of user profile sever 130 and travel products severs 135 may include random access memory (RAM), read only memory (ROM), solid state storage devices, magnetic storage devices, optical storage devices, or any other suitable information storage device or a combination of such devices.

Servers contemplated for use in travel booking system 100, including user profile sever 130 and travel products severs 135, may be implemented in any suitable manner. As an example, each of user profile server 130 and travel products severs 135 may be implemented as a single server, as multiple servers, as a server distributed over multiple locations, as one or more virtualized servers (e.g., implemented on the cloud), and/or provided as a service. Additionally, servers described herein may be implemented using hardware, software, or any suitable combination thereof. For example, one or more servers used with travel booking system 100 may be implemented as a database using software only. As another example, the servers described herein may be implemented using hardware physically located in one or more locations. Furthermore, servers described herein may share one or more hardware or software elements with other servers, including servers not owned or controlled by the same entity implemented travel booking system 100. Accordingly, the terms “server” and “servers” as referenced herein, e.g., as user profile sever 130 and travel products severs 135, may refer to any suitable apparatus or implementation of software that may provide access to the information used by travel booking system 100.

FIG. 2 illustrates an implementation of recommendation tool 110, in accordance with certain embodiments. Recommendation tool 110 may be implemented by any suitable combination of hardware and software. In certain embodiments, recommendation tool may be implemented with processor(s) 111, memory 112, and interfaces 113. Recommendation tool 110 may be configured in the illustrated configuration or in any other suitable configuration.

Interfaces 113 are configured to enable wired and/or wireless communications. Interface 113 are configured to communicate data between components of travel booking system 100, such as user profile server 130 and travel products server 135, client device 140, and network 105. In some embodiments, interfaces 113 includes user profile server interface 230, travel products server interface 235, client device interface 240, and network interface 245, each coupled to their respective component. Interfaces 230, 235, 240, 245 may be implemented as separate interfaces and/or implemented sharing interface hardware in any suitable manner to provide communications between recommendation tool 110 and the respective components of travel booking system 100. In some embodiments, interfaces 113 may include a WIFI interface, a local area network (LAN) interface, a wide area network (WAN) interface, a modem, a switch, and/or a router. Processor(s) 111 may be configured to send and receive data using any of interfaces 113. Interfaces 113 may be configured to use any suitable type of communication protocol as would be appreciated by one of ordinary skill in the art.

Memory 112 comprises one or more disks, tape drives, or solid-state drives, and may be used as an over-flow data storage device, to store programs when such programs are selected for execution, and to store instructions and data that are read during program execution. Memory 112 may be volatile or non-volatile and may comprise read-only memory (ROM), random-access memory (RAM), ternary content-addressable memory (TCAM), dynamic random-access memory (DRAM), and static random-access memory (SRAM). Memory 112 is operable to store instructions for obtaining trip conditions from a user, causing the display of a set of travel itineraries, adjusting a user preference model based at least in part on the user's selection from the set of travel itineraries, applying the user preference model to select a recommended itinerary, and/or any other data or instructions that may be used to carry out the functions and processing described herein. The instructions in memory 112 may include any suitable set of instructions, logic, rules, or code operable to execute itinerary set selector 115, user preference modeler 120, and recommendation engine 125. Additionally, memory 112 may be operable to store other information used or generated by recommendation tool 110. For example, memory 112 may be configured to store data 210, which may include user profile information 210 a, trip conditions 210 b, user selections 210 c, travel products 210 d, preference model information 210 e, recommendations 210 f, and any other information or data used by recommendation tool 110 to carry out the functions described above.

Processor 111 comprises one or more processors operably coupled to the memory 112 and/or interfaces 113. Processor 111 is any electronic circuitry including, but not limited to, state machines, one or more central processing unit (CPU) chips, logic units, cores (e.g. a multi-core processor), field-programmable gate array (FPGAs), application specific integrated circuits (ASICs), or digital signal processors (DSPs). Processor 111 may be a programmable logic device, a microcontroller, a microprocessor, or any suitable combination of the preceding. Processor 111 is communicatively coupled to and in signal communication with the memory 112 and/or interfaces 113. The one or more processors are configured to process data and may be implemented in hardware or software. For example, processor 111 may be 8-bit, 16-bit, 32-bit, 64-bit or of any other suitable architecture. Processor 111 may include an arithmetic logic unit (ALU) for performing arithmetic and logic operations, processor registers that supply operands to the ALU and store the results of ALU operations, and a control unit that fetches instructions from memory and executes them by directing the coordinated operations of the ALU, registers and other components.

The one or more processors of processor(s) 111 are configured to implement various instructions. For example, the one or more processors are configured to execute instructions to implement itinerary set selector 115, user preference modeler 120, and recommendation engine 125. In this way, processor 111 may be a special purpose computer designed to implement function disclosed herein. In some embodiments, itinerary set selector 115, user preference modeler 120, and recommendation engine 125 are each implemented using logic units, FPGAs, ASICs, DSPs, or any other suitable hardware.

FIG. 3 illustrates a flowchart diagram of an example method 300 for recommending a travel itinerary to a traveler, in accordance with certain embodiments. Method 300 may begin at step 310, wherein one or more trip conditions from a user are obtained. For example, the origin, destination, and travel dates of a trip the user is planning may be obtained. These conditions may be used to determine what travel products are available for booking the trip. For example, recommendation tool 100 may obtain the trip conditions from traveler 150 via client device 140. Traveler 150 may input one or more trip conditions into an interface of client device 140 to communicate the trip conditions to travel booking system 100, which may relay those trip conditions to recommendation tool 110.

At step 320, a first set of two or more selected travel itineraries conforming to the trip conditions are caused to be displayed to the user. For example, two or more of the available itineraries may be presented to the user, e.g., via his computer or phone, such that the user may review the different features of the itineraries. At step 330, the user is prompted to select a subset of the first set of displayed travel itineraries. For example, the display of the set of itineraries may include instructions to select one of the displayed itineraries by selecting a button that indicates the selection of a certain one of the itineraries. As a particular example, itinerary set selector 115 of recommendation tool 110 selects which itineraries to include in the displayed set and prompts traveler 150 to select at least one of the presented itineraries, as described above.

At step 340, a user preference model is adjusted based at least in part on the user's selection of the subset of the first set of displayed travel itineraries. For example, a data structure may be constructed that represented the user's preferences across different dimensions of features and options of the travel products. The data structure may be altered or transformed based on the selection by the user to better reflect the user's preferences. For example, if the user selects an itinerary that includes a flight with relatively low price and no connections, the user preference model may be adjusted to have a higher preference for lower prices and limited connections. In an example, user preference modeler 120 may determine a user preference model, such as user preference model 103, and adjust the user preference model based on the selections made by traveler 150.

At step 350, the user preference model is applied to a set of travel products conforming to the trip criteria. For example, the user preference model may be compared to the available travel products to determine which of the travel products is most closely aligned with the user's preferences. In some embodiments, the user preference model may be applied by applying a mathematical comparison between the user preference model and each of the travel products and selecting the travel products at a local or global extreme of the comparison. As a specific example, recommendation engine 125 of recommendation tool 110 may apply user preference model 103 to determine a closest match between preference model 103 and the available travel products.

At step 360, a recommended travel itinerary is displayed to the user. The recommended travel itinerary is a travel product from the set of travel products that most closely matches the user preferences based on the user preference model. For example, the recommended travel itinerary may be the travel product that had the highest Pearson Correlation Coefficient or the largest Cosine similarity with the user preference model. In one example, recommendation engine 125 may communicate, directly or indirectly, with client device 140 to display recommended itinerary 104, e.g., using GUI 145 a of client device 140. In this manner, method 300 may provide a recommended travel itinerary to the user based on the user's selection of itineraries from sets of itineraries.

Method 300 may include more or fewer steps and/or one or more substeps, according to certain embodiments. For example, method 300 may further include displaying additional sets of two or more itineraries, prompting the user to select a subset of the itineraries from each additional set, and adjust the user preference model based on these additional selections, in certain embodiments. As another example, applying the user preference model includes substeps of calculating the recommended travel itinerary by applying a function based on the user preference model to the set of travel products and selecting a respective travel product of the set of travel products that represents a local extreme of the function as the recommended travel itinerary.

Additionally, method 300 may include any suitable step to carry out any of the described functions of travel booking system 100 and/or recommendation tool 110. And, while certain components of travel booking system 100 and/or recommendation tool 110 may have been described as carrying out one or more steps of method 300 or therein referenced, any suitable system or components thereof may be used to carry out the various steps of the methods described herein.

FIGS. 4-8 illustrate a visual representation of an example progression of building a user preference profile using pairs of itineraries and recommending a travel itinerary. FIG. 4 illustrates an example input screen for one or more trip conditions. For example, the user, such as traveler 150, may input the origin (DFW), destination (BWI), departure date (Aug. 28, 2017), and return date (Aug. 31, 2017). This information may be provided using an interface accessible to the user, such as his phone or computer.

This trip condition information may be obtained by a recommendation tool and used to provide a recommendation to the user. The recommendation tool may first generate a user preference model by presenting sets of itineraries to the user to indicate his preferences. FIG. 5 illustrates an initial condition of the recommendation display to the user. This display also includes a representation of the user preference model having three dimensions: connection, price, and air comfort. While the representation of the user preference model may be illustrated in this example, in some embodiments, the user is not aware of the progression of the user preference model.

Once the selection process is initiated, two or more itineraries may be selected to be presented to the user. FIG. 6 shows an example pair of itineraries based on the trip conditions. The pair include an American flight with no connections for $113.00 but lacking any air comfort amenities. The pair also includes a jetBlue flight with one connection for $399.80 and including baggage, WIFI, and inflight snacks. Below each of the itineraries is a button that enables the user to select the respective itinerary that is preferred by the user.

In this example progression, the user selects the presented jetBlue flight. FIG. 7 shows the results of the selection. On the right, the user preference model has changed across all the dimensions. For example, the connection and price sensitivity both dropped significantly after selecting the flight with over triple the price of the unselected flight and a connection versus no connection. The air comfort sensitivity has increased in response to selecting the flight with several amenities over the flight without any. Also shown in FIG. 7 are another pair of flights for preference selection by the user. This time, both flights presented are relatively high-priced ($365.00 and $444.00) and have no connections but differ in the amenities provided. This second set of itineraries may be selected using the previous information obtained from the user, such as his previous selections. In this case, it appears that this pair reflects a selection between price and amenities, e.g., pricing how much certain amenities are worth to the user. In this example, the user selects the cheaper American flight on the left without amenities.

FIG. 8 illustrates the aftermath of the selection. On the right, the sensitivities have slightly changed to reflect the higher price sensitivity and slightly lower air comfort sensitivity based on the selection of the cheaper flight from the last pair. FIG. 8 also shows the presentation of two recommended flights based on the user's prior selections. For example, the recommendation tool may have used the current iteration of the user preference model to select two recommended itineraries that best match the preference model. The display also provides buttons to select one of the recommended flights to book (as opposed to select as part of the preference modeling feature). In this manner, the recommendation tool may provide recommendations based on user selections between available itineraries.

In addition, techniques, systems, subsystems, and methods described and illustrated in the various embodiments as discrete or separate may be combined or integrated with other systems, modules, techniques, or methods without departing from the scope of the present disclosure. Other items shown or discussed as coupled or directly coupled or communicating with each other may be indirectly coupled or communicating through some interface, device, or intermediate component whether electrically, mechanically, or otherwise. Other examples of changes, substitutions, and alterations are ascertainable by one skilled in the art and could be made without departing from the spirit and scope disclosed herein. 

1. A computerized travel booking system, comprising: one or more first servers configured to store one or more travel products available for booking through the travel booking system; and a travel itinerary recommendation tool, comprising: an itinerary set selector configured to: obtain one or more trip conditions from the user via a client device; cause the display on the client device of a first set of two or more selected travel itineraries conforming to the trip conditions, wherein the two or more selected travel itineraries are selected from a plurality of travel products obtained from the one or more first servers; and prompt the user to select a subset of the first set of displayed travel itineraries; a user preference modeler configured to adjust a user preference model based at least in part on the user's selection of the subset of the first set of displayed travel itineraries; and a recommendation engine configured to: apply the user preference model to a set of travel products conforming to the trip criteria; and cause the display of a recommended travel itinerary on the client device, wherein the recommended travel itinerary is a travel product from the set of travel products that most closely matches the user preferences based on the user preference model.
 2. The travel booking system of claim 1, further comprising: a second server configured to store information associated with travelers previously using the travel booking system; wherein the user preference model is initialized based on information associated with the user obtained from the second server.
 3. The travel booking system of claim 1, wherein: the itinerary set selector is further configured to: cause the display of a second set of two or more selected travel itineraries conforming to the trip criteria, wherein the second set is different from the first set; and prompting the user to select a subset of the second set of displayed travel itineraries; and the user preference modeler is further configured to adjust the user preference model based on the user's selection of the subset of the second set of displayed travel itineraries.
 4. The travel booking system of claim 1, wherein the one or more first servers are configured to store travel products comprising one or more of airline flights, hotel rooms, and car rentals, and bookable attractions.
 5. A computerized method, comprising: obtaining, by a computer, one or more trip conditions from a user; causing, by a computer, the display of a first set of two or more selected travel itineraries conforming to the trip conditions; prompting, by a computer, the user to select a subset of the first set of displayed travel itineraries; adjusting, by a computer, a user preference model based at least in part on the user's selection of the subset of the first set of displayed travel itineraries; applying, by a computer, the user preference model to a set of travel products conforming to the trip criteria; and causing, by a computer, the display of a recommended travel itinerary, wherein the recommended travel itinerary is a travel product from the set of travel products that most closely matches the user preferences based on the user preference model.
 6. The method of claim 5, wherein causing the display of the first set of two or more selected travel itineraries conforming to the trip criteria comprises selecting, by a computer, two or more selected travel itineraries conforming to the trip criteria randomly from all of travel itineraries conforming to the trip criteria.
 7. The method of claim 5, further comprising, before applying the user preference model to a set of travel products conforming to the trip criteria, for each of one or more additional sets of two or more selected travel itineraries: causing, by a computer, the display of a respective additional set of two or more selected travel itineraries conforming to the trip conditions; prompting, by a computer, the user to select a subset of the respective additional set of displayed travel itineraries; and adjusting, by a computer, the user preference model based at least in part on the user's selection of the subset of the respective additional set of displayed travel itineraries.
 8. The method of claim 7, wherein each of the one or more additional sets of two or more selected travel itineraries is selected based on the first set of displayed travel itineraries and any sets of the one or more additional sets previously displayed.
 9. The method of claim 7, wherein a number of the one or more additional sets is a predetermined number.
 10. The method of claim 7, further comprising: for each adjustment to the user preference model, determining, by a computer, a certainty value of the user preference model; wherein additional sets are displayed until the certainty value is determined to exceed or equal a threshold certainty value.
 11. The method of claim 5, wherein applying the user preference model to a set of travel products conforming to the trip criteria comprises: calculating the recommended travel itinerary by applying a function based on the user preference model to the set of travel products; and selecting a respective travel product of the set of travel products that represents a local extreme of the function as the recommended travel itinerary.
 12. The method of claim 5, wherein the user preference model comprises one or more preference dimensions, wherein the one or more preference dimensions comprise a price sensitivity dimension, a connection sensitivity, and a comfort sensitivity; wherein the first set of two or more selected travel itineraries comprise two or more travel itineraries that differ across one or more of the preference dimensions of the user model; and wherein adjusting the user preference model is further based on differences between the selected subset of the first set of displayed travel itineraries and unselected ones of the first set of displayed travel itineraries.
 13. A computerized travel itinerary recommendation tool, comprising: an itinerary set selector configured to: obtain one or more trip conditions from a user; cause the display of a first set of two or more selected travel itineraries conforming to the trip conditions; and prompt the user to select a subset of the first set of displayed travel itineraries; a user preference modeler configured to adjust a user preference model based at least in part on the user's selection of the subset of the first set of displayed travel itineraries; and a recommendation engine configured to: apply the user preference model to a set of travel products conforming to the trip criteria; and cause the display of a recommended travel itinerary, wherein the recommended travel itinerary is a travel product from the set of travel products that most closely matches the user preferences based on the user preference model.
 14. The travel itinerary recommendation tool of claim 13, wherein causing the display of the first set of two or more selected travel itineraries conforming to the trip criteria comprises selecting two or more selected travel itineraries conforming to the trip criteria randomly from all of travel itineraries conforming to the trip criteria.
 15. The travel itinerary recommendation tool of claim 13, wherein, before applying the user preference model to a set of travel products conforming to the trip criteria, for each of one or more additional sets of two or more selected travel itineraries: the itinerary set selector is further configured to: cause the display of a respective additional set of two or more selected travel itineraries conforming to the trip conditions; and prompt the user to select a subset of the respective additional set of displayed travel itineraries; and the user preference modeler is further configured to adjust the user preference model based at least in part on the user's selection of the subset of the respective additional set of displayed travel itineraries.
 16. The travel itinerary recommendation tool of claim 15, wherein each of the one or more additional sets of two or more selected travel itineraries is selected based on the first set of displayed travel itineraries and any sets of the one or more additional sets previously displayed.
 17. The travel itinerary recommendation tool of claim 15, wherein a number of the one or more additional sets is a predetermined number.
 18. The travel itinerary recommendation tool of claim 15, wherein the user preference modeler is further configured to, for each adjustment to the user preference model, determine a certainty value of the user preference model; wherein additional sets are displayed until the certainty value is determined to exceed or equal a threshold certainty value.
 19. The travel itinerary recommendation tool of claim 13, wherein applying the user preference model to a set of travel products conforming to the trip criteria comprises: calculating the recommended travel itinerary by applying a function based on the user preference model to the set of travel products; and selecting a respective travel product of the set of travel products that represents a local extreme of the function as the recommended travel itinerary.
 20. The travel itinerary recommendation tool of claim 13, wherein the user preference model comprises one or more preference dimensions, wherein the one or more preference dimensions comprise a price sensitivity dimension, a connection sensitivity, and a comfort sensitivity; wherein the first set of two or more selected travel itineraries comprise two or more travel itineraries that differ across one or more of the preference dimensions of the user model; and wherein adjusting the user preference model is further based on differences between the selected subset of the first set of displayed travel itineraries and unselected ones of the first set of displayed travel itineraries. 